<!DOCTYPE html>
            
<HTML>
<HEAD>
<meta name="booktitle" content="Developing Applications With Objective Caml" >
 <meta charset="ISO-8859-1"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<META name="GENERATOR" content="hevea 1.05-7 of 2000-02-24">
<META NAME="Author" CONTENT="Christian.Queinnec@lip6.fr">
<LINK rel=stylesheet type="text/css" href="videoc-ocda.css">
<script language="JavaScript" src="videoc.js"><!--
//--></script>
<TITLE>
 Exercises
</TITLE>
</HEAD>
<BODY class="regularBody">
<A HREF="book-ora030.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora032.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H2> Exercises</H2><A NAME="toc43"></A>
<H3> Doubly Linked Lists</H3>
Functional programming lends itself well to the manipulation of non-cyclic
data structures, such as lists for example. For cyclic structures, on
the other hand, there are real implementation difficulties. Here we
propose to define doubly linked lists, i.e., where each element of a list
knows its predecessor and its successor.
<OL type=1>
<LI>
 Define a parameterized <A id="a117__1_APPEND/PIcor.ml.tex" href="javascript: void showMessage('1_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 1,APPEND/PIcor.ml.tex,PIdlltype -->type</SPAN></A> for doubly 
linked lists, using at least one record with mutable fields.
<!-- POPUP DEFINITION -->
<layer id="l__1_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","1_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 A cell is a record containing a value, the list of the following
cells, and the list of the preceding cells.


<PRE><BR># <B>type</B><CODE> </CODE><I>'a</I><CODE> </CODE>cell<CODE> </CODE><CODE>=</CODE><CODE> </CODE>{<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>info<CODE> </CODE><CODE>:</CODE><CODE> </CODE><I>'a</I><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>mutable</B><CODE> </CODE>prev<CODE> </CODE><CODE>:</CODE><CODE> </CODE><I>'a</I><CODE> </CODE>dlist<CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>mutable</B><CODE> </CODE>next<CODE> </CODE><CODE>:</CODE><CODE> </CODE><I>'a</I><CODE> </CODE>dlist<CODE> </CODE>}<CODE> </CODE><BR>

</PRE>
<BR>
<BR>
A list is either empty or a cell.


<PRE><BR><CODE> </CODE><B>and</B><CODE> </CODE><I>'a</I><CODE> </CODE>dlist<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Empty<CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE><B>of</B><CODE> </CODE><I>'a</I><CODE> </CODE>cell<CODE> </CODE>;;<BR><CODE>type 'a cell = { info: 'a; mutable prev: 'a dlist; mutable next: 'a dlist }</CODE><BR><CODE>type 'a dlist = | Empty | Cell of 'a cell</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("1_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script><BR>
<BR>

<LI> Write the functions <TT><A id="a118__2_APPEND/PIcor.ml.tex" href="javascript: void showMessage('2_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 2,APPEND/PIcor.ml.tex,PIdlladd -->add</SPAN></A></TT> and 
<TT><A id="a119__3_APPEND/PIcor.ml.tex" href="javascript: void showMessage('3_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 3,APPEND/PIcor.ml.tex,PIdlldel -->remove</SPAN></A></TT>  
which add and remove an element of a doubly linked list.
<!-- POPUP DEFINITION -->
<layer id="l__2_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","2_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 To add a cell containing x to the list, insert it between the
cell indicated by the current list and its preceding cell.


<PRE><BR># <B>let</B><CODE> </CODE>add<CODE> </CODE>x<CODE> </CODE><CODE>=</CODE><CODE> </CODE><B>function</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>Cell<CODE> </CODE>{<CODE> </CODE>info<CODE>=</CODE>x<CODE> </CODE>;<CODE> </CODE>prev<CODE>=</CODE>Empty<CODE> </CODE>;<CODE> </CODE>next<CODE>=</CODE>Empty<CODE> </CODE>}<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>c<CODE> </CODE><B>as</B><CODE> </CODE>l<CODE> </CODE>-&gt;<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>new_cell<CODE> </CODE><CODE>=</CODE><CODE> </CODE>{<CODE> </CODE>info<CODE>=</CODE>x<CODE> </CODE>;<CODE> </CODE>prev<CODE>=</CODE>c<CODE>.</CODE>prev<CODE> </CODE>;<CODE> </CODE>next<CODE>=</CODE>l<CODE> </CODE>}<CODE> </CODE><B>in</B><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>new_dlist<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Cell<CODE> </CODE>new_cell<CODE> </CODE><B>in</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>c<CODE>.</CODE>prev<CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>new_dlist<CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><TT>(</TT><CODE> </CODE><B>match</B><CODE> </CODE>new_cell<CODE>.</CODE>prev<CODE> </CODE><B>with</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>()<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>pl<CODE> </CODE>-&gt;<CODE> </CODE>pl<CODE>.</CODE>next<CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>new_dlist<CODE> </CODE><TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>new_dlist<CODE> </CODE>;;<BR><CODE>val add : 'a -&gt; 'a dlist -&gt; 'a dlist = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("2_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__3_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","3_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 To remove the cell indicated by the current list, simply readjust any 
remaining non-empty cells.


<PRE><BR># <B>let</B><CODE> </CODE>remove_cell<CODE> </CODE><CODE>=</CODE><CODE> </CODE><B>function</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>failwith<CODE> </CODE><CODE>"Already empty"</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>c<CODE> </CODE>-&gt;<CODE> </CODE><B>match</B><CODE> </CODE><TT>(</TT>c<CODE>.</CODE>prev<CODE> </CODE><CODE>,</CODE><CODE> </CODE>c<CODE>.</CODE>next<TT>)</TT><CODE> </CODE><B>with</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>Empty<CODE> </CODE><CODE>,</CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>Empty<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>c1<CODE> </CODE><B>as</B><CODE> </CODE>l<CODE> </CODE><CODE>,</CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>c1<CODE>.</CODE>next<CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>Empty<CODE> </CODE>;<CODE> </CODE>l<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Empty<CODE> </CODE><CODE>,</CODE><CODE> </CODE><TT>(</TT><TT>(</TT>Cell<CODE> </CODE>c2<TT>)</TT><CODE> </CODE><B>as</B><CODE> </CODE>l<TT>)</TT><CODE> </CODE>-&gt;<CODE> </CODE>c2<CODE>.</CODE>prev<CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>Empty<CODE> </CODE>;<CODE> </CODE>l<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>c1<CODE> </CODE><B>as</B><CODE> </CODE>l1<CODE> </CODE><CODE>,</CODE><CODE> </CODE><TT>(</TT>Cell<CODE> </CODE>c2<CODE> </CODE><B>as</B><CODE> </CODE>l2<TT>)</TT><CODE> </CODE>-&gt;<CODE> </CODE>c1<CODE>.</CODE>next<CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>l2;<CODE> </CODE>c2<CODE>.</CODE>prev<CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>l1;<CODE> </CODE>l1<CODE> </CODE><CODE> </CODE>;;<BR><CODE>val remove_cell : 'a dlist -&gt; 'a dlist = &lt;fun&gt;</CODE><BR>

</PRE>
<BR>
<BR>
To remove all the cells containing x, traverse the list in both directions
and use <TT>remove_cell</TT> on any instance of x.


<PRE><BR># <B>let</B><CODE> </CODE><B>rec</B><CODE> </CODE>remove<CODE> </CODE>x<CODE> </CODE>l<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE><B>rec</B><CODE> </CODE>remove_left<CODE> </CODE><CODE>=</CODE><CODE> </CODE><B>function</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>()<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>c<CODE> </CODE><B>as</B><CODE> </CODE>l<CODE> </CODE>-&gt;<CODE> </CODE><B>let</B><CODE> </CODE>pl<CODE> </CODE><CODE>=</CODE><CODE> </CODE>c<CODE>.</CODE>prev<CODE> </CODE><B>in</B><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>if</B><CODE> </CODE>c<CODE>.</CODE>info<CODE> </CODE><CODE>=</CODE><CODE> </CODE>x<CODE> </CODE><B>then</B><CODE> </CODE>ignore<CODE> </CODE><TT>(</TT>remove_cell<CODE> </CODE>l<TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>remove_left<CODE> </CODE>pl<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>and</B><CODE> </CODE>remove_right<CODE> </CODE><CODE>=</CODE><CODE> </CODE><B>function</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>()<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>c<CODE> </CODE><B>as</B><CODE> </CODE>l<CODE> </CODE>-&gt;<CODE> </CODE><B>let</B><CODE> </CODE>nl<CODE> </CODE><CODE>=</CODE><CODE> </CODE>c<CODE>.</CODE>next<CODE> </CODE><B>in</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>if</B><CODE> </CODE>c<CODE>.</CODE>info<CODE> </CODE><CODE>=</CODE><CODE> </CODE>x<CODE> </CODE><B>then</B><CODE> </CODE>ignore<CODE> </CODE><TT>(</TT>remove_cell<CODE> </CODE>l<TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>remove_right<CODE> </CODE>nl<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>match</B><CODE> </CODE>l<CODE> </CODE><B>with</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>Empty<CODE> </CODE>-&gt;<CODE> </CODE>Empty<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>Cell<CODE> </CODE>c<CODE> </CODE><B>as</B><CODE> </CODE>l<CODE> </CODE>-&gt;<CODE> </CODE><B>if</B><CODE> </CODE>c<CODE>.</CODE>info<CODE> </CODE><CODE>=</CODE><CODE> </CODE>x<CODE> </CODE><B>then</B><CODE> </CODE>remove<CODE> </CODE>x<CODE> </CODE><TT>(</TT>remove_cell<CODE> </CODE>l<TT>)</TT><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>else</B><CODE> </CODE><TT>(</TT>remove_left<CODE> </CODE>c<CODE>.</CODE>prev<CODE> </CODE>;<CODE> </CODE>remove_right<CODE> </CODE>c<CODE>.</CODE>next<CODE> </CODE>;<CODE> </CODE>l<TT>)</TT><CODE> </CODE>;;<BR><CODE>val remove : 'a -&gt; 'a dlist -&gt; 'a dlist = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("3_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script></OL><A NAME="toc44"></A>
<H3> Solving linear systems</H3>
<A NAME="ex-systemes"></A>
This exercise has to do with matrix algebra. It solves a system of
equations by Gaussian elimination (i.e., pivoting). We write the system
of equations <I>A</I> &nbsp; <I>X</I> = <I>Y</I> with <I>A</I>, a square matrix of dimension <I>n</I>,
<I>Y</I>, a vector of constants of dimension <I>n</I> and <I>X</I>, a vector of unknowns
of the same dimension.<BR>
<BR>
This method consists of transforming the system <I>A</I> &nbsp; <I>X</I> = <I>Y</I> into an
equivalent system <I>C</I> &nbsp; <I>X</I> = <I>Z</I> such that the matrix <I>C</I> is upper
triangular. We diagonalize <I>C</I> to obtain the
solution.
<OL type=1>
<LI>
 Define a type <I>vect</I>, a type <I>mat</I>, and a type
 <I><A id="a120__4_APPEND/PIcor.ml.tex" href="javascript: void showMessage('4_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 4,APPEND/PIcor.ml.tex,PIlsyst -->syst</SPAN></A></I> . 
<!-- POPUP DEFINITION -->
<layer id="l__4_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","4_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>type</B><CODE> </CODE>vect<CODE> </CODE><CODE>=</CODE><CODE> </CODE>float<CODE> </CODE>array<CODE> </CODE>;;<BR><CODE>type vect = float array</CODE><BR># <B>type</B><CODE> </CODE>mat<CODE> </CODE><CODE>=</CODE><CODE> </CODE>vect<CODE> </CODE>array<CODE> </CODE>;;<BR><CODE>type mat = vect array</CODE><BR># <B>type</B><CODE> </CODE>syst<CODE> </CODE><CODE>=</CODE><CODE> </CODE>{<CODE> </CODE>m<CODE>:</CODE>mat<CODE> </CODE>;<CODE> </CODE>v<CODE>:</CODE>vect<CODE> </CODE>}<CODE> </CODE>;;<CODE> </CODE><BR><CODE>type syst = { m: mat; v: vect }</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("4_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script><BR>
<BR>

<LI> Write utility functions for manipulating vectors:
to <A id="a121__5_APPEND/PIcor.ml.tex" href="javascript: void showMessage('5_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 5,APPEND/PIcor.ml.tex,PIlsprint -->display</SPAN></A> a system  
on screen, to <A id="a122__6_APPEND/PIcor.ml.tex" href="javascript: void showMessage('6_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 6,APPEND/PIcor.ml.tex,PIlsadd -->add</SPAN></A>  
two vectors, to <A id="a123__7_APPEND/PIcor.ml.tex" href="javascript: void showMessage('7_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 7,APPEND/PIcor.ml.tex,PIlsmultscal -->multiply</SPAN></A>  
a vector by a scalar.
<!-- POPUP DEFINITION -->
<layer id="l__5_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","5_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 To print floats, limiting the output to five characters.


<PRE><BR># <B>let</B><CODE> </CODE>my_print_float<CODE> </CODE>s<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>x<CODE> </CODE><CODE>=</CODE><CODE> </CODE>string_of_float<CODE> </CODE>s<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>let</B><CODE> </CODE>y<CODE> </CODE><CODE>=</CODE><CODE> </CODE><B>match</B><CODE> </CODE>String.length<CODE> </CODE>x<CODE> </CODE><B>with</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE> </CODE>-&gt;<CODE> </CODE>x<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>n<CODE> </CODE><B>when</B><CODE> </CODE>n<CODE>&lt;</CODE><CODE>5</CODE><CODE> </CODE>-&gt;<CODE> </CODE><TT>(</TT>String.make<CODE> </CODE><TT>(</TT><CODE>5</CODE><CODE>-</CODE>n<TT>)</TT><CODE> </CODE><CODE>' '</CODE><TT>)</TT><CODE> </CODE><CODE>^</CODE><CODE> </CODE>x<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>|</CODE><CODE> </CODE>n<CODE> </CODE>-&gt;<CODE> </CODE>String.sub<CODE> </CODE>x<CODE> </CODE><CODE>0</CODE><CODE> </CODE><CODE>5</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE>print_string<CODE> </CODE>y<CODE> </CODE><CODE> </CODE>;;<BR><CODE>val my_print_float : float -&gt; unit = &lt;fun&gt;</CODE><BR>

</PRE>
<BR>
<BR>
To print a system.


<PRE><BR># <B>let</B><CODE> </CODE>print_syst<CODE> </CODE>s<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>l<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>s<CODE>.</CODE>m<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>for</B><CODE> </CODE>i<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>print_string<CODE> </CODE><CODE>"  | "</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>for</B><CODE> </CODE>j<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>my_print_float<CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>print_string<CODE> </CODE><CODE>"  "</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>if</B><CODE> </CODE>i<CODE>=</CODE>l<CODE>/</CODE><CODE>2</CODE><CODE> </CODE><B>then</B><CODE> </CODE>print_string<CODE> </CODE><CODE>"  |  *  | x"</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>else</B><CODE> </CODE>print_string<CODE> </CODE><CODE>"  |     | x"</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>print_int<CODE> </CODE><TT>(</TT>i<CODE>+</CODE><CODE>1</CODE><TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>if</B><CODE> </CODE>i<CODE>=</CODE>l<CODE>/</CODE><CODE>2</CODE><CODE> </CODE><B>then</B><CODE> </CODE>print_string<CODE> </CODE><CODE>"  |  =  | "</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>else</B><CODE> </CODE>print_string<CODE> </CODE><CODE>"  |     | "</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>my_print_float<CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>print_string<CODE> </CODE><CODE>" |"</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>print_newline<CODE> </CODE>()<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><CODE> </CODE>;;<BR><CODE>val print_syst : syst -&gt; unit = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("5_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__6_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","6_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>add_vect<CODE> </CODE>v1<CODE> </CODE>v2<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>l<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>v1<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>let</B><CODE> </CODE>res<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.create<CODE> </CODE>l<CODE> </CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>for</B><CODE> </CODE>i<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>v1<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>+.</CODE><CODE> </CODE>v2<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE> </CODE>;;<BR><CODE>val add_vect : float array -&gt; float array -&gt; float array = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("6_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__7_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","7_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>mult_scal_vect<CODE> </CODE>x<CODE> </CODE>v<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>l<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>v<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>let</B><CODE> </CODE>res<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.create<CODE> </CODE>l<CODE> </CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>for</B><CODE> </CODE>i<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>v<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>*.</CODE><CODE> </CODE>x<CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE> </CODE>;;<BR><CODE>val mult_scal_vect : float -&gt; float array -&gt; float array = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("7_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script><BR>
<BR>

<LI> Write utility functions for matrix computations:
<A id="a124__8_APPEND/PIcor.ml.tex" href="javascript: void showMessage('8_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 8,APPEND/PIcor.ml.tex,PIlsmult -->multiplication</SPAN></A> of two matrices, 
<A id="a125__9_APPEND/PIcor.ml.tex" href="javascript: void showMessage('9_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 9,APPEND/PIcor.ml.tex,PIlsmultvect -->product</SPAN></A>  
of a matrix with a vector.
<!-- POPUP DEFINITION -->
<layer id="l__8_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","8_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>mult_mat<CODE> </CODE>m1<CODE> </CODE>m2<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>l1<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>m1<CODE> </CODE><B>and</B><CODE> </CODE>l2<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>m2<CODE>.</CODE><TT>(</TT><CODE>0</CODE><TT>)</TT><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>and</B><CODE> </CODE>l3<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>m2<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>let</B><CODE> </CODE>res<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.create_matrix<CODE> </CODE>l1<CODE> </CODE>l2<CODE> </CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>for</B><CODE> </CODE>i<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l1<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>for</B><CODE> </CODE>j<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l2<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>for</B><CODE> </CODE>k<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l3<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>+.</CODE><CODE> </CODE>m1<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>k<TT>)</TT><CODE> </CODE><CODE>*.</CODE><CODE> </CODE>m2<CODE>.</CODE><TT>(</TT>k<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><CODE> </CODE><B>done</B><CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE> </CODE><CODE> </CODE>;;<BR><CODE>val mult_mat : float array array -&gt; float array array -&gt; float array array =</CODE><BR><CODE>  &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("8_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__9_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","9_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>mult_mat_vect<CODE> </CODE>m<CODE> </CODE>v<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>l1<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>m<CODE> </CODE><B>and</B><CODE> </CODE>l2<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>v<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>let</B><CODE> </CODE>res<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.create<CODE> </CODE>l1<CODE> </CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>for</B><CODE> </CODE>i<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l1<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>for</B><CODE> </CODE>j<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l2<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>+.</CODE><CODE> </CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>*.</CODE><CODE> </CODE>v<CODE>.</CODE><TT>(</TT>j<TT>)</TT><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE> </CODE>;;<BR><CODE>val mult_mat_vect : float array array -&gt; float array -&gt; float array = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("9_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script><BR>
<BR>

<LI> Write utility functions for manipulating systems:
<A id="a126__10_APPEND/PIcor.ml.tex" href="javascript: void showMessage('10_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 10,APPEND/PIcor.ml.tex,PIlsdiv -->division</SPAN></A> of a row of a system by a pivot, 
(<I>A</I><SUB><FONT SIZE=2><I>ii</I></FONT></SUB>), <A id="a127__11_APPEND/PIcor.ml.tex" href="javascript: void showMessage('11_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 11,APPEND/PIcor.ml.tex,PIlsswap -->swap</SPAN></A>ping two rows. 
<!-- POPUP DEFINITION -->
<layer id="l__10_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","10_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>div_syst<CODE> </CODE>s<CODE> </CODE>i<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>p<CODE> </CODE><CODE>=</CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE><CODE>1</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>for</B><CODE> </CODE>j<CODE>=</CODE>i<CODE>+</CODE><CODE>1</CODE><CODE> </CODE><B>to</B><CODE> </CODE><TT>(</TT>Array.length<CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT><CODE>0</CODE><TT>)</TT><TT>)</TT><CODE> </CODE><CODE>-</CODE><CODE> </CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>/.</CODE><CODE> </CODE>p<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>/.</CODE><CODE> </CODE>p<CODE> </CODE>;;<BR><CODE>val div_syst : syst -&gt; int -&gt; unit = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("10_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__11_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","11_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>permut_syst<CODE> </CODE>s<CODE> </CODE>i<CODE> </CODE>j<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>aux1<CODE> </CODE><CODE>=</CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><B>and</B><CODE> </CODE>aux2<CODE> </CODE><CODE>=</CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>aux1<CODE> </CODE>;<CODE> </CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>aux2<CODE> </CODE>;;<BR><CODE>val permut_syst : syst -&gt; int -&gt; int -&gt; unit = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("11_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script><BR>
<BR>

<LI> Write a function to <A id="a128__12_APPEND/PIcor.ml.tex" href="javascript: void showMessage('12_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 12,APPEND/PIcor.ml.tex,PIlstriang -->diagonalize</SPAN></A> a system. From 
this, obtain a function <A id="a129__13_APPEND/PIcor.ml.tex" href="javascript: void showMessage('13_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 13,APPEND/PIcor.ml.tex,PIlssolve -->solving</SPAN></A> a linear system. 
<!-- POPUP DEFINITION -->
<layer id="l__12_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","12_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>exception</B><CODE> </CODE>Not_linear<CODE> </CODE>;;<BR><CODE>exception Not_linear</CODE><BR><BR># <B>let</B><CODE> </CODE>triangulize<CODE> </CODE>s<CODE> </CODE><CODE>=</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>if</B><CODE> </CODE>s<CODE>.</CODE>m<CODE>=[|</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><CODE>||</CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>=[|</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><B>then</B><CODE> </CODE>raise<CODE> </CODE>Not_linear<CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>l<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>s<CODE>.</CODE>m<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>if</B><CODE> </CODE>l<CODE>&lt;&gt;</CODE>Array.length<CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT><CODE>0</CODE><TT>)</TT><CODE> </CODE><CODE>||</CODE><CODE> </CODE>l<CODE>&lt;&gt;</CODE>Array.length<CODE> </CODE>s<CODE>.</CODE>v<CODE> </CODE><B>then</B><CODE> </CODE>raise<CODE> </CODE>Not_linear<CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>for</B><CODE> </CODE>i<CODE>=</CODE><CODE>0</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>if</B><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>=</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><B>then</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>begin</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>j<CODE> </CODE><CODE>=</CODE><CODE> </CODE>ref<CODE> </CODE><TT>(</TT>i<CODE>+</CODE><CODE>1</CODE><TT>)</TT><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>while</B><CODE> </CODE><CODE>!</CODE>j<CODE>&lt;</CODE>l<CODE> </CODE><CODE>&amp;&amp;</CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT><CODE>!</CODE>j<TT>)</TT><CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>=</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><B>do</B><CODE> </CODE>incr<CODE> </CODE>j<CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>if</B><CODE> </CODE><CODE>!</CODE>j<CODE>=</CODE>l<CODE> </CODE><B>then</B><CODE> </CODE>raise<CODE> </CODE>Not_linear<CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>permut_syst<CODE> </CODE>s<CODE> </CODE>i<CODE> </CODE><CODE>!</CODE>j<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>end</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>div_syst<CODE> </CODE>s<CODE> </CODE>i<CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>for</B><CODE> </CODE>j<CODE>=</CODE>i<CODE>+</CODE><CODE>1</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>-.</CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>*.</CODE><CODE> </CODE>s<CODE>.</CODE>v<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE>add_vect<CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><TT>(</TT>mult_scal_vect<CODE> </CODE><TT>(</TT><CODE>-.</CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE>.</CODE><TT>(</TT>i<TT>)</TT><TT>)</TT><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><TT>)</TT><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><CODE> </CODE><CODE> </CODE>;;<BR><CODE>val triangulize : syst -&gt; unit = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("12_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__13_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","13_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>solve<CODE> </CODE>s<CODE> </CODE><CODE>=</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE>triangulize<CODE> </CODE>s<CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>l<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.length<CODE> </CODE>s<CODE>.</CODE>v<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>let</B><CODE> </CODE>res<CODE> </CODE><CODE>=</CODE><CODE> </CODE>Array.copy<CODE> </CODE>s<CODE>.</CODE>v<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>for</B><CODE> </CODE>i<CODE> </CODE><CODE>=</CODE><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>downto</B><CODE> </CODE><CODE>0</CODE><CODE> </CODE><B>do</B><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>let</B><CODE> </CODE>x<CODE> </CODE><CODE>=</CODE><CODE> </CODE>ref<CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>in</B><CODE> </CODE><B>for</B><CODE> </CODE>j<CODE>=</CODE>i<CODE>+</CODE><CODE>1</CODE><CODE> </CODE><B>to</B><CODE> </CODE>l<CODE>-</CODE><CODE>1</CODE><CODE> </CODE><B>do</B><CODE> </CODE>x<CODE> </CODE><CODE>:=</CODE><CODE> </CODE><CODE>!</CODE>x<CODE> </CODE><CODE>-.</CODE><CODE> </CODE>s<CODE>.</CODE>m<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><CODE>*.</CODE><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>j<TT>)</TT><CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE>.</CODE><TT>(</TT>i<TT>)</TT><CODE> </CODE><CODE>&lt;-</CODE><CODE> </CODE><CODE>!</CODE>x<CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><B>done</B><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>res<CODE> </CODE>;;<BR><CODE>val solve : syst -&gt; float array = &lt;fun&gt;</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("13_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script><BR>
<BR>

<LI> Test your functions on the following systems:<BR>
<BR>
<DIV ALIGN=center><TABLE CELLSPACING=0 CELLPADDING=0>
<TR VALIGN=middle><TD NOWRAP> <A id="a130__14_APPEND/PIcor.ml.tex" href="javascript: void showMessage('14_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 14,APPEND/PIcor.ml.tex,PIslex1 --><I>AX</I></SPAN></A> = </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP>10</TD>
<TD  ALIGN=center NOWRAP>7</TD>
<TD  ALIGN=center NOWRAP>8</TD>
<TD  ALIGN=center NOWRAP>7</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>7</TD>
<TD  ALIGN=center NOWRAP>5</TD>
<TD  ALIGN=center NOWRAP>6</TD>
<TD  ALIGN=center NOWRAP>5</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>8</TD>
<TD  ALIGN=center NOWRAP>6</TD>
<TD  ALIGN=center NOWRAP>10</TD>
<TD  ALIGN=center NOWRAP>9</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>7</TD>
<TD  ALIGN=center NOWRAP>5</TD>
<TD  ALIGN=center NOWRAP>9</TD>
<TD  ALIGN=center NOWRAP>10</TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>* </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>1</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>2</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>3</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>4</FONT></SUB></TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>= </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP>32</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>23</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>33</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>31</TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>= <I>Y</I></TD>
</TR></TABLE></DIV>  <BR>
<DIV ALIGN=center><TABLE CELLSPACING=0 CELLPADDING=0>
<TR VALIGN=middle><TD NOWRAP> <A id="a131__15_APPEND/PIcor.ml.tex" href="javascript: void showMessage('15_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 15,APPEND/PIcor.ml.tex,PIslex2 --><I>AX</I></SPAN></A> = </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP>10</TD>
<TD  ALIGN=center NOWRAP>7</TD>
<TD  ALIGN=center NOWRAP>8</TD>
<TD  ALIGN=center NOWRAP>7</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>7</TD>
<TD  ALIGN=center NOWRAP>5</TD>
<TD  ALIGN=center NOWRAP>6</TD>
<TD  ALIGN=center NOWRAP>5</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>8</TD>
<TD  ALIGN=center NOWRAP>6</TD>
<TD  ALIGN=center NOWRAP>10</TD>
<TD  ALIGN=center NOWRAP>9</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>7</TD>
<TD  ALIGN=center NOWRAP>5</TD>
<TD  ALIGN=center NOWRAP>9</TD>
<TD  ALIGN=center NOWRAP>10</TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>* </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>1</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>2</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>3</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>4</FONT></SUB></TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>= </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP>32.1</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>22.9</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>33.1</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>30.9</TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>= <I>Y</I></TD>
</TR></TABLE></DIV>  <BR>
<DIV ALIGN=center><TABLE CELLSPACING=0 CELLPADDING=0>
<TR VALIGN=middle><TD NOWRAP> <A id="a132__16_APPEND/PIcor.ml.tex" href="javascript: void showMessage('16_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 16,APPEND/PIcor.ml.tex,PIslex3 --><I>AX</I></SPAN></A> = </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP>10</TD>
<TD  ALIGN=center NOWRAP>7</TD>
<TD  ALIGN=center NOWRAP>8.1</TD>
<TD  ALIGN=center NOWRAP>7.2</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>7.08</TD>
<TD  ALIGN=center NOWRAP>5.04</TD>
<TD  ALIGN=center NOWRAP>6</TD>
<TD  ALIGN=center NOWRAP>5</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>8</TD>
<TD  ALIGN=center NOWRAP>5.98</TD>
<TD  ALIGN=center NOWRAP>9.89</TD>
<TD  ALIGN=center NOWRAP>9</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>6.99</TD>
<TD  ALIGN=center NOWRAP>4.99</TD>
<TD  ALIGN=center NOWRAP>9</TD>
<TD  ALIGN=center NOWRAP>9.98</TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>* </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>1</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>2</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>3</FONT></SUB></TD>
</TR>
<TR><TD  ALIGN=center NOWRAP><I>x</I><SUB><FONT SIZE=2>4</FONT></SUB></TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>= </TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP><TABLE CELLSPACING=2 CELLPADDING=0>
<TR><TD  ALIGN=center NOWRAP>32</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>23</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>33</TD>
</TR>
<TR><TD  ALIGN=center NOWRAP>31</TD>
</TR></TABLE></TD>
<TD NOWRAP><FONT FACE=symbol>
�<BR>�<BR>�<BR>�<BR>�</FONT></TD>
<TD NOWRAP>= <I>Y</I> </TD>
</TR></TABLE></DIV> 
<!-- POPUP DEFINITION -->
<layer id="l__14_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","14_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>ax1<CODE> </CODE><CODE>=</CODE><CODE> </CODE>{<CODE> </CODE>m<CODE> </CODE><CODE>=</CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>1</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>8</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>6</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>8</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>6</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>1</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>1</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>v<CODE> </CODE><CODE>=</CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>3</CODE><CODE>2</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>2</CODE><CODE>3</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>3</CODE><CODE>3</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>3</CODE><CODE>1</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>}<CODE> </CODE>;;<BR><CODE>val ax1 : syst =</CODE><BR><CODE>  {m=[|[|10; 7; 8; 7|]; [|7; 5; 6; 5|]; [|8; 6; 10; ...|]; ...|]; v=...}</CODE><BR><BR># <B>let</B><CODE> </CODE>r1<CODE> </CODE><CODE>=</CODE><CODE> </CODE>solve<CODE> </CODE>ax1<CODE> </CODE>;;<BR><CODE>val r1 : float array = [|1; 1; 1; 1|]</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("14_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__15_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","15_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>ax2<CODE> </CODE><CODE>=</CODE><CODE> </CODE>{<CODE> </CODE>m<CODE> </CODE><CODE>=</CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>1</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>8</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>6</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>8</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>6</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>1</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>1</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>v<CODE> </CODE><CODE>=</CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>3</CODE><CODE>2</CODE><CODE>.</CODE><CODE>1</CODE><CODE> </CODE>;<CODE> </CODE><CODE>2</CODE><CODE>2</CODE><CODE>.</CODE><CODE>9</CODE><CODE> </CODE>;<CODE> </CODE><CODE>3</CODE><CODE>3</CODE><CODE>.</CODE><CODE>1</CODE><CODE> </CODE>;<CODE> </CODE><CODE>3</CODE><CODE>0</CODE><CODE>.</CODE><CODE>9</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>}<CODE> </CODE>;;<BR><CODE>val ax2 : syst =</CODE><BR><CODE>  {m=[|[|10; 7; 8; 7|]; [|7; 5; 6; 5|]; [|8; 6; 10; ...|]; ...|]; v=...}</CODE><BR><BR># <B>let</B><CODE> </CODE>r2<CODE> </CODE><CODE>=</CODE><CODE> </CODE>solve<CODE> </CODE>ax2<CODE> </CODE>;;<BR><CODE>val r2 : float array = [|9.2; -12.6; 4.5; -1.1|]</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("15_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<!-- POPUP DEFINITION -->
<layer id="l__16_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","16_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 

<PRE><BR># <B>let</B><CODE> </CODE>ax3<CODE> </CODE><CODE>=</CODE><CODE> </CODE>{<CODE> </CODE>m<CODE> </CODE><CODE>=</CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>1</CODE><CODE>0</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>8</CODE><CODE>.</CODE><CODE>1</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>2</CODE><CODE> </CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>7</CODE><CODE>.</CODE><CODE>0</CODE><CODE>8</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE>4</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>6</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE><CODE>|]</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>8</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>5</CODE><CODE>.</CODE><CODE>9</CODE><CODE>8</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>8</CODE><CODE>9</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE><CODE>|]</CODE><BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE> </CODE><CODE>6</CODE><CODE>.</CODE><CODE>9</CODE><CODE>9</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>4</CODE><CODE>.</CODE><CODE>9</CODE><CODE>9</CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE> </CODE><CODE>9</CODE><CODE>.</CODE><CODE>9</CODE><CODE>8</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE>;<BR><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>v<CODE> </CODE><CODE>=</CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE><CODE>[|</CODE><CODE> </CODE><CODE>3</CODE><CODE>2</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>2</CODE><CODE>3</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE> </CODE>;<CODE> </CODE><CODE>3</CODE><CODE>3</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE>;<CODE> </CODE><CODE>3</CODE><CODE>1</CODE><CODE>.</CODE><CODE>0</CODE><CODE> </CODE><CODE>|]</CODE><CODE> </CODE><CODE> </CODE><CODE> </CODE>}<CODE> </CODE>;;<BR><CODE>val ax3 : syst =</CODE><BR><CODE>  {m=</CODE><BR><CODE>    [|[|10; 7; 8.1; 7.2|]; [|7.08; 5.04; 6; 5|]; [|8; 5.98; 9.89; ...|];</CODE><BR><CODE>      ...|];</CODE><BR><CODE>   v=...}</CODE><BR><BR># <B>let</B><CODE> </CODE>r3<CODE> </CODE><CODE>=</CODE><CODE> </CODE>solve<CODE> </CODE>ax3<CODE> </CODE>;;<BR><CODE>val r3 : float array = [|-80.9999999999; 137; -33.9999999999; 22|]</CODE><BR>

</PRE>

</span><script language="JavaScript"><!--
  closePopUp("16_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script><BR>
<BR>

<LI> What can you <A id="a133__17_APPEND/PIcor.ml.tex" href="javascript: void showMessage('17_APPEND/PIcor.ml.tex')" class="mousable"><SPAN style=""><!-- 17,APPEND/PIcor.ml.tex,PIlsconc -->say</SPAN></A> about the results you got?  
<!-- POPUP DEFINITION -->
<layer id="l__17_APPEND/PIcor.ml.tex" class="hint" style="visibility:hidden; position:absolute" visibility="hide"  width="50%">
<script language="JavaScript"><!--
  openPopUp("50%","17_APPEND/PIcor.ml.tex","");
// --></script><span style="">
 One should never neglect the effect of round-off errors. A small error
in the input data can cause a great error in the result when multiplied.
</span><script language="JavaScript"><!--
  closePopUp("17_APPEND/PIcor.ml.tex");
// --></script></layer><!-- END OF POPUP -->
<script language="JavaScript"><!--
  initializePreviousHints();
// --></script></OL><HR>
<A HREF="book-ora030.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora032.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
